from rest_framework import serializers # 导入序列化的类
from classes.models import ClassesMixin # 班级模型
from user.serializer import UserSerializer # 导入用户的序列化



class ClassesSerializer(serializers.ModelSerializer):
    # 自定义字段
    # member = UserSerializer(many=True) # Many = True 表示可以查询多个
    # 第二种 不要与原来的数据相同不然会失去原有的表单 注意：要命名不同的名称
    member_name = serializers.SerializerMethodField() # 把该字段变成一个可调用的方法,会获取get_member方法的返回值
    # 源类
    class Meta:
        model = ClassesMixin  # 指定模型
        exclude = ['is_delete'] # 排除字段
        extra_kwargs = {
            'member':{'write_only':True}
        } # 修改原有字段只能写


    # get_可调用的字段名称
    def get_member_name(self,ClassesMixin):
        serial = UserSerializer(ClassesMixin.member.all(),many=True)
        # 分组:老师组id是1 学生组的id是2 超级管理员的id是1
        date = {
            'teacher':[i for i in serial.data if 1 in i['groups'] or i['is_superuser']],   # groups表示组,is_superuser表示超级超级管理员
            'student':[u for u in serial.data if 2 in u['groups']]
        }

        return date # 返回分组






